from utils import get_embedding, cosine_similarity_2, logging

question_hierarchy = {
    "technology": {
        "parent": "人工智能技术发展的主要挑战有哪些？",
        "children": [
            "自然语言处理模型如何解决多义词歧义问题？",
            "计算机视觉领域对抗样本攻击的防御方案有哪些？",
            "强化学习在机器人控制中的实时决策瓶颈是什么？"
        ]
    },
    "education": {
        "parent": "如何提升偏远地区基础教育质量？",
        "children": [
            "针对山区小学师资短缺问题，双师课堂模式如何实施？",
            "缺乏电力供应的非洲乡村学校如何通过太阳能设备开展数字化教学？",
            "少数民族地区双语教材开发需要遵循哪些语言学原则？"
        ]
    },
    "health": {
        "parent": "慢性病管理的核心策略是什么？",
        "children": [
            "2型糖尿病患者动态血糖监测设备的校准频率如何设定？",
            "基于可穿戴设备的心房颤动预警算法需要哪些生理参数？",
            "社区医院高血压患者的远程用药提醒系统应包含哪些功能模块？"
        ]
    },
    "environment": {
        "parent": "全球变暖对极地生态系统的影响体现在哪些方面？",
        "children": [
            "北极苔原永久冻土层融化导致甲烷释放量的测算方法有哪些？",
            "南极磷虾种群数量变化与海水酸化程度的相关性研究进展如何？",
            "格陵兰冰盖表面暗化现象对太阳辐射吸收率的影响模型如何构建？"
        ]
    },
    "economy": {
        "parent": "数字货币对传统金融体系的冲击表现在哪些层面？",
        "children": [
            "央行数字货币(DCEP)的跨境结算系统如何实现SWIFT系统兼容？",
            "DeFi平台智能合约漏洞导致的经济损失追偿机制如何设计？",
            "比特币矿场能源消耗的碳足迹计量标准存在哪些争议？"
        ]
    },
    "culture": {
        "parent": "非物质文化遗产保护需要哪些技术支持？",
        "children": [
            "基于三维扫描的黎族传统纺染织绣技艺数字化存档标准如何制定？",
            "方言语音识别算法在闽南语皮影戏唱腔记录中的应用难点有哪些？",
            "敦煌壁画颜料成分光谱分析数据库的建设规范包含哪些内容？"
        ]
    }
}

# 将问题嵌入成向量
embeddings_question_hierarchy = {}
for category, data in question_hierarchy.items():
    parent_embedding = get_embedding(data["parent"])
    children_embeddings = [get_embedding(child) for child in data["children"]]
    embeddings_question_hierarchy[category] = {
        "parent": parent_embedding,
        "children": children_embeddings
    }

# 计算父类问题与子类问题的相似度
logging.info("'test4>>>>>>>>>>>>计算父类问题与子类问题的相似度'")
for category, data in embeddings_question_hierarchy.items():
    parent_embedding = data["parent"]
    children_embeddings = data["children"]
    logging.info(f"领域: {category}")
    for i, child_embedding in enumerate(children_embeddings):
        similarity = cosine_similarity_2(parent_embedding, child_embedding)
        logging.info(f"父类问题与子类问题 {i+1} 的相似度: {similarity:.4f}")